package utils
{
	import flash.geom.Rectangle;

	public class Array2d //extends Array
	{
		private var _array:Array=[];
		//private var _array:Array=[];
//		private var _width:int;
//		private var _height:int;
		
		public function Array2d(width:int,height:int)
		{
//			_width=width;
//			_height=height;
		}

		/**
		 * 添加一行到。
		 * @param data
		 * 
		 */
		public function insertRow(data:Array,col:int):void{
			for(var i:int=0;i<data.length;i++){
				set(i,col,data[i]);
			}
		}
		
		/**
		 * 添加一列到row行。
		 * @param row
		 * 
		 */
		public function insertCol(data:Array,row:int):void{
			for(var i:int=0;i<data.length;i++){
				set(row,i,data[i]);
			}
		}
		public function getRow(col:int):Array{
			return _array[col];
		}
		public function getCol(row:int):Array{
			var a:Array=[];
			for(var i:int=0;i<_array.length;i++){
				if(_array[i]==null) continue;
				a.push(_array[i][row]);
			}
			return a;
		}
		public function get(row:int,col:int):*{
			  if(_array[col]==null) return null ;
		      return _array[col][row];
		}
		
		/**
		 *  
		 * @param row 行
		 * @param col 列
		 * @param value 值
		 * 
		 */
		public function set(row:int,col:int,value:*):void{
			if(value==null){
				remove(row,col);
				return ;
			}
			if(_array[col]==null){
				_array[col]=[];
			}
			_array[col][row]=value;
		}
		public function remove(row:int,col:int):void{
			if(_array[col]==null) return ;
			_array[col][row]=null;
		}
		public function getArray(rect:Rectangle):Array{
			var a:Array=[];
			var temp:*;
			 for(var i:int=rect.x;i<rect.width+rect.x;i++){
				 for(var j:int=rect.y;j<rect.height+rect.y;j++){
					 temp=get(i,j);
					 if(temp){
					 	a.push(temp);
					 }
				 }
			 }
		     return a;
		}
		public function print():void{
			var temp:Array=[];
			for (var i:int=0; i<_array.length; i++) {
				if (_array == null ) {
					continue;
				}
				temp = _array[i];
				if(temp==null) continue;
				for (var j:int=0; j<temp.length; j++) {
					if(temp[j]==null) continue;
					trace(j,i,":",temp[j]);
				}
			}
		}
		
	}
}